The invention disclosed herein relates generally to communication between mobile devices over wireless networks. More particularly, the present invention relates to a system and software for determining a mobile device's presence status in a network or real-time collaboration application.
Presence systems involve an entity distributing information to other devices on a network or participating on a collaborative application regarding the status of the principal controlling the entity. Specifically, presence information concerns: where the principal controlling the entity is, what they are doing, or if they may be reached. Presence information can be summarized as possessing three general characteristics: it may change frequently, it may be of interest to a large number of parties, and it should be disseminated rapidly to those parties of interest. A model for presence systems and their application to instant messaging technology is presented in RFC 2778, entitled “A Model for Presence and Instant Messaging” and available at www.rfc-editor.org/rfc/rfc2778.txt, which is hereby incorporated by reference in its entirety.
An exemplary real-time collaboration application is Sametime version 2.0 from Lotus Development Corp. The core of the Sametime application is a secure instant messaging (IM) architecture, which safely keeps IM traffic within an organizational LAN or encrypted while passing over the Internet to remote users. The real-time collaboration aspect of the application goes beyond instant messaging, providing multiparty audio and video conferencing, screen sharing which allows a plurality of users to simultaneously edit a document, and a set of APIs that allow webmasters to add messaging functions to web pages. Importantly, the application tracks each user's status or presence information, allowing the system to determine if a particular user or device is available for transmission or receipt of information.
Problems that arise with the implementation of presence systems may be thought of as the intersection of the following elements: the frequency of the updates, the size of the updates, the number of subscribers receiving updates, and the cost of transmitting an update to a subscriber. In a typical implementation on a personal computer connected to a wired network, transport costs are relatively low and therefore allow for all presence changes to be simply propagated directly to all interested parties. There are situations, however, where this sort of brute force transmission of updates is impossible or undesirable. For example, in wireless networks, as will be explained herein in greater detail, taking this approach is prohibitively expensive. Thus, techniques are needed to effectively replace multiple frequent “low-level” updates with fewer “high-level” updates.
Status checking or “presence” technology is an important component of distributed and collaborative applications that allow multiple users to interact and share resources in real-time. As the presence status of each client connected to the system changes, all connected clients must be continuously broadcast presence status updates regarding the status change of every other device. Unfortunately, the resources consumed by these transmissions are a serious concern where bandwidth is scarce or expensive. Presence systems, and the network infrastructure required to support them, can significantly increase costs while degrading network and application performance.
An awareness or presence system similar to those employed by real-time collaboration applications can generate updates and notifications every few seconds as the status of each client device changes. Indeed, a client's status can change many times every second under certain circumstances, e.g., where the entity is not a person but another type of entity such as a computer system. Brute force techniques like the ones discussed above for delivering presence information are viable, indeed desirable, when the requesting and target devices are communicating over an inexpensive network, e.g., broadband wired network. By exploiting the ability to continuously transmit presence data, other devices can be assured that the presence status of a target device is constantly fresh.
Bandwidth in present day wireless networks, however, is in limited supply. In many of these wireless networks, there are nontrivial charges per message or even per byte. On such networks, methods are needed to deliver a form of presence information to other devices on a network or collaborating on an application without requiring a multiplicity of messages being passed between devices. By reducing the number of status messages passed over the network, unnecessary bandwidth utilization is reduced for the presence system as well as the total bandwidth required by any application accessing the network.
Some solutions have been developed to improve the efficiency with which resources are used in networks with high bandwidth costs or limited bandwidth infrastructure. One such example is U.S. Pat. No. 5,915,220, entitled “System and Method for Maintaining Profile Information in a Telecommunications Network”. This patent discusses transmitting a user's profile information to a mobile switching center currently providing an access point for the user only when the profile information is updated, thereby reducing bandwidth requirements. Another solution, U.S. Pat. No. 5,519,758, entitled “Radiotelephonic Process for Locating Mobile Subscribers and a Radiotelephone Installation for Implementing the Process”, discusses generating a profile regarding the movements of a mobile user. In response to an incoming communication request, the recorded location zone from the profile with the highest probability of containing the user is selected. In the event the device is not in the zone selected, the zone with the next highest probability of containing the user is selected, and so on until the device is located. These systems, however, neither teach nor suggest systems or methods for transmitting presence status updates to other clients in a distributed or collaborative environment.
Thus, a technique is needed for improving the efficiency with which presence status updates are transmitted to other clients in distributed and collaborative environments. There is a further need for reducing the bandwidth used to communicate such updates.